package com.huanbao.auth.fallback;

import com.alibaba.csp.sentinel.slots.block.flow.FlowException;
import com.huanbao.auth.feign.CloudNongwuApi;
import com.huanbao.common.pojo.nwrabc.SysUser;
import com.huanbao.common.pojo.nwrabc.vo.NwUserDetails;
import feign.hystrix.FallbackFactory;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;

/* ━━━━━━佛祖保佑━━━━━━
 *                  ,;,,;
 *                ,;;'(    社
 *      __      ,;;' ' \   会
 *   /'  '\'~~'~' \ /'\.)  主
 * ,;(      )    /  |.     义
 *,;' \    /-.,,(   ) \    码
 *     ) /       ) / )|    农
 *     ||        ||  \)
 *     (_\       (_\
 * ━━━━━━永无BUG━━━━━━
 * @author ：zjq
 * @date ：2021/4/2 14:57
 * @description: TODO               saas 熔断 工厂 , 与 sentinel 结合
 * @version: V1.0
 * @slogan: 天下风云出我辈，一入代码岁月催
 */
@Order(-1)
@Component
@Slf4j
public class SaasFallBackFactory implements FallbackFactory<CloudNongwuApi> {


    @Override
    public CloudNongwuApi create(Throwable throwable) {
        return new CloudNongwuApi() {
            @Override
            public NwUserDetails getUserInfoByName(String userName) {
                // 返回一个默认的不存在用户 也行
                // 直接返回  CommnResult 也行


                // 这个可以根据自己业务情况 返回一个 -1 代表 这个接口失败了
                NwUserDetails nw = new NwUserDetails();
                SysUser sysUser = new SysUser();
                sysUser.setId(-1);
                nw.setSysUser(sysUser);
                return nw;

                // 可以用 CommnResult 返回
/*                if (throwable instanceof FlowException) {
                    return CommnResult.error(100,"接口限流了");
                }

                return CommnResult.error(-1,"=======服务降级了========");*/




            }
        };
    }
}
